﻿Partial Public Class DettaglioAnnuncio
    Inherits System.Web.UI.Page
    Private strhelp As New Helpers.Strings
    Private cmnhelp As New Helpers.Common
    Public maxPhotoSize As Integer = CInt(ConfigurationManager.AppSettings("maxPhotoSize"))
    Public photoExt As String = ConfigurationManager.AppSettings("photoExt")
    Public maxPhotoNumber As Integer = CInt(ConfigurationManager.AppSettings("maxPhotoNumber"))
    Public IDAnnuncio As Guid = Nothing
    Public apikey As String = ConfigurationManager.AppSettings("apikey")
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            LoadDdl()
            If Not String.IsNullOrEmpty(Request.QueryString("id")) Then
                Page.Title = ConfigurationManager.AppSettings("sitename") & " Amministrazione - Modifica Annuncio"
                IDAnnuncio = New Guid(Request.QueryString("id"))
                Dim annuncio As Annuncio = DAL.Context.Annuncio.Where(Function(a) a.ID = IDAnnuncio).Single
                If annuncio IsNot Nothing Then
                    With annuncio
                        txtRiferimento.Text = strhelp.NullToStr(.Riferimento)
                        ddlCondizione.SelectedValue = strhelp.NullToStr(.IDCondizione)
                        ddlContratto.SelectedValue = .IDTipoContratto
                        ddlImmobile.SelectedValue = .IDTipoImmobile
                        txtAnnoFabbricazione.Text = strhelp.NullToStr(.AnnoFabbricazione)
                        txtBagni.Text = strhelp.NullToStr(.Bagni)
                        txtCAP.Text = strhelp.NullToStr(.CAP)
                        txtComune.Text = .Comune.Comune & " (" & .Comune.Provincia.Sigla & ")"
                        hfComune.Value = .IDComune
                        txtDataPubblicazione.Text = .DataPubblicazione.ToShortDateString
                        If .DataScadenza IsNot Nothing Then txtDataScadenza.Text = .DataScadenza.Value.ToShortDateString
                        txtDescrizione.Value = strhelp.NullToStr(.Descrizione)
                        txtIndirizzo.Text = strhelp.NullToStr(.Indirizzo)
                        txtMQ.Text = strhelp.NullToStr(.MQ)
                        txtPiano.Text = strhelp.NullToStr(.Piano)
                        txtTitolo.Text = strhelp.NullToStr(.Titolo)
                        txtVani.Text = strhelp.NullToStr(.Vani)
                        If .Prezzo IsNot Nothing Then txtPrezzo.Text = String.Format("{0:#########0}", .Prezzo)
                    End With
                End If
                rpImmagini.DataSource = annuncio.AnnuncioImmagini.OrderBy(Function(i) i.Ordine).ToList
                rpImmagini.DataBind()
            Else
                Page.Title = ConfigurationManager.AppSettings("sitename") & " Amministrazione - Nuovo Annuncio"
                txtDataPubblicazione.Text = Date.Now.ToShortDateString
                IDAnnuncio = Guid.NewGuid
            End If
            hfIDAnnuncio.Value = IDAnnuncio.ToString
        End If
    End Sub
    Private Sub LoadDdl()
        ddlCondizione.DataSource = DAL.Context.Condizione.OrderBy(Function(a) a.Descrizione).ToList
        ddlCondizione.DataBind()
        ddlCondizione.Items.Insert(0, New ListItem("-Seleziona Condizione-", 0))
        ddlContratto.DataSource = DAL.Context.TipoContratto.OrderBy(Function(a) a.Descrizione).ToList
        ddlContratto.DataBind()
        ddlContratto.Items.Insert(0, New ListItem("-Seleziona Contratto-", 0))
        ddlImmobile.DataSource = DAL.Context.TipoImmobile.OrderBy(Function(a) a.Descrizione).ToList
        ddlImmobile.DataBind()
        ddlImmobile.Items.Insert(0, New ListItem("-Seleziona Immobile-", 0))
    End Sub
    Private Sub btnsalva_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnsalva.Click
        Try
            Dim annuncio As Annuncio = Nothing
            If Not String.IsNullOrEmpty(Request.QueryString("id")) Then
                IDAnnuncio = New Guid(Request.QueryString("id"))
                annuncio = DAL.Context.Annuncio.Where(Function(a) a.ID = IDAnnuncio).Single
            Else
                IDAnnuncio = New Guid(hfIDAnnuncio.Value)
                annuncio = New Annuncio
                annuncio.ID = IDAnnuncio 'Guid.NewGuid
                DAL.Context.Annuncio.InsertOnSubmit(annuncio)
            End If
            With annuncio
                If Not String.IsNullOrEmpty(txtAnnoFabbricazione.Text) Then .AnnoFabbricazione = CInt(txtAnnoFabbricazione.Text.Trim)
                If Not String.IsNullOrEmpty(txtBagni.Text) Then .Bagni = CInt(txtBagni.Text.Trim)
                If Not String.IsNullOrEmpty(txtCAP.Text) Then .CAP = txtCAP.Text.Trim
                If Not String.IsNullOrEmpty(hfComune.Value) Then .IDComune = CInt(hfComune.Value)
                If Not String.IsNullOrEmpty(txtDataPubblicazione.Text) Then .DataPubblicazione = Date.Parse(txtDataPubblicazione.Text.Trim)
                If Not String.IsNullOrEmpty(txtDataScadenza.Text) Then .DataScadenza = Date.Parse(txtDataScadenza.Text.Trim)
                If Not String.IsNullOrEmpty(txtDescrizione.Value) Then .Descrizione = txtDescrizione.Value
                If Not String.IsNullOrEmpty(txtIndirizzo.Text) Then .Indirizzo = txtIndirizzo.Text.Trim
                If Not String.IsNullOrEmpty(txtMQ.Text) Then .MQ = CInt(txtMQ.Text.Trim)
                If Not String.IsNullOrEmpty(txtPiano.Text) Then .Piano = CInt(txtPiano.Text.Trim)
                If Not String.IsNullOrEmpty(txtPrezzo.Text) Then .Prezzo = CDbl(txtPrezzo.Text.Trim)
                If Not String.IsNullOrEmpty(txtTitolo.Text) Then .Titolo = txtTitolo.Text.Trim
                If Not String.IsNullOrEmpty(txtRiferimento.Text) Then .Riferimento = txtRiferimento.Text.Trim
                If Not String.IsNullOrEmpty(txtVani.Text) Then .Vani = CInt(txtVani.Text.Trim)
                If ddlCondizione.SelectedValue > 0 Then .IDCondizione = ddlCondizione.SelectedValue
                If ddlContratto.SelectedValue > 0 Then .IDTipoContratto = ddlContratto.SelectedValue
                If ddlImmobile.SelectedValue > 0 Then .IDTipoImmobile = ddlImmobile.SelectedValue
                .IDUtente = HttpContext.Current.User.Identity.Name
            End With
            'Inserimento nel DB di immagini GIA' CARICATE nel file system. 
            'Dobbiamo solo associarle all'annuncio
            If Not String.IsNullOrEmpty(hfImmagini.Value) Then
                Dim imgs As String() = hfImmagini.Value.Split(",")
                Dim ids As List(Of Integer) = (From i In DAL.Context.AnnuncioImmagini Where i.IDAnnuncio = IDAnnuncio Select i.IDImmagine).ToList
                Dim maxIDImmagine As Integer = 0
                If ids.Count > 0 Then maxIDImmagine = ids.Max
                For Each img As String In imgs
                    If Not String.IsNullOrEmpty(img) Then
                        maxIDImmagine = maxIDImmagine + 1
                        Dim i As New AnnuncioImmagini With {.IDAnnuncio = IDAnnuncio, .IDImmagine = maxIDImmagine, .Percorso = img}
                        DAL.Context.AnnuncioImmagini.InsertOnSubmit(i)
                    End If
                Next
            End If
            'Aggiornamento ordine immagine
            If Not String.IsNullOrEmpty(hfImmaginiOrdine.Value) Then
                Dim immaginiAnnuncio As List(Of AnnuncioImmagini) = DAL.Context.AnnuncioImmagini.Where(Function(i) i.IDAnnuncio = IDAnnuncio).ToList
                Dim imgIDs As String() = hfImmaginiOrdine.Value.Split(",")
                For index As Integer = 0 To imgIDs.Length - 1
                    If Not String.IsNullOrEmpty(imgIDs(index)) Then
                        Dim ordine As Integer = index
                        immaginiAnnuncio.Where(Function(i) i.IDImmagine = imgIDs(ordine)).Single.Ordine = ordine
                    End If
                Next
            End If
            DAL.Context.SubmitChanges()
            Response.Redirect(Page.ResolveUrl("~/Administrator/Annunci.aspx"))
        Catch tex As Threading.ThreadAbortException
            '
        Catch ex As Exception
            cmnhelp.OpenDialog(ex.Message)
        End Try
    End Sub
End Class